AWS Cloud9 の環境作成時に作られた EC2 インスタンスが削除された際の調査方法
困っていた内容
AWS Cloud9 の環境作成時に作られた EC2 インスタンスが削除されておりました。CloudTrail で TerminateInstances イベントについての調査を行うために EC2 のインスタンス ID を確認したかったのですが、「EC2 インスタンスの管理」をクリックして EC2 コンソールに遷移しても「一致するインスタンスが見つかりません」と表示されて手がかりがありません。
削除された EC2 インスタンスのインスタンス ID と削除を行った IAM クレデンシャルの特定方法がありましたら、教えてください。
調査方法
EC2 環境を選択して Cloud9 の作成を行うと、裏で CloudFormation スタックが動いて EC2 インスタンスが作成されます。そのため、CloudFormation の スタック名の検索にて Cloud9 の EC2 ARN の environment 以下の英数字で検索をかけると、対象のスタックが表示できます。
対象のスタックのリソースから EC2 のインスタンス ID が確認できるので、その情報をもとに CloudTrail で TerminateInstances イベントの検索を行なってください。
調査してみた
今回は Cloud9 を cloud9-test という環境名で作成し、EC2 ARN の environment では 74861135a18f412e9e08cfc6f7f0ba7e という英数字が割り当てられていました。そのため、CloudFormation の検索バーに「74861135a18f412e9e08cfc6f7f0ba7e」と入れて検索します。
すると、以下のように対象のスタックが表示されました。
スタックを選択した後、「リソース」タブからインスタンス ID を確認することができます。
CloudTrail コンソールのイベント履歴から「リソース名」を選択してインスタンス ID の検索を行うと、TerminateInstances イベントについて確認ができるので、削除を行った IAM クレデンシャルなどの調査が可能となります。
Cloud9 環境も削除した場合は?
Cloud9 環境も削除してしまった場合は、CloudFormation のスタックの検索時にステータスフィルターを「削除済み」にすると対象スタックが表示されます。
AWS Cloud9 の EC2 インスタンスを誤って削除されないようにするためには?
方法は色々あるかと思いますが、インスタンス終了保護の有効化が手っ取り早く試せる対策となります。